1
00:00:00,000 --> 00:00:10,000
لقد استخدمنا كل طريقة للتكرار من خلال مصفوفات روبي الأساسية، ولكن ماذا يحدث عندما تكتب فئة المجموعة الخاصة بك؟

2
00:00:10,000 --> 00:00:12,000
 حسنًا، دعونا نلقي نظرة على مثال.

3
00:00:12,000 --> 00:00:18,000
 لنفترض أن لدينا فئة أنواع بسيطة تحتوي على مجموعة من الأنواع في متغير مثيل الاسم.

4
00:00:18,000 --> 00:00:22,000
 لأغراضنا، إنها مجرد مجموعة من أسماء الأنواع.

5
00:00:22,000 --> 00:00:25,000
 الأكشن والكوميديا ​​والخيال العلمي والمغامرة.

6
00:00:25,000 --> 00:00:29,000
 ما نريد أن نكون قادرين على القيام به هو تكرار الأسماء باستخدام كل منها.

7
00:00:29,000 --> 00:00:32,000
 بالتأكيد، لذلك قد نعتقد أننا يمكن أن نقول فقط الأنواع.

8
00:00:32,000 --> 00:00:33,000
أعطها الكتلة.

9
00:00:33,000 --> 00:00:37,000
 سيعطينا هذا اسم النوع، ومن ثم يمكننا طباعته بهذه الطريقة.

10
00:00:37,000 --> 00:00:43,000
 لكن هذا لن ينجح لأن الأنواع هي كائن من فئة النوع،

11
00:00:43,000 --> 00:00:46,000
 ولا يحدد كل طريقة.

12
00:00:46,000 --> 00:00:49,000
 تحتوي فئة النوع على أو تحتوي على مصفوفة.

13
00:00:49,000 --> 00:00:53,000
 هذا هو متغير مثيل الأسماء، وله طريقة كل،

14
00:00:53,000 --> 00:00:56,000
 لكننا على بعد مستوى واحد منه هنا.

15
00:00:56,000 --> 00:00:59,000
 ولكن يمكننا تحديد كل طريقة خاصة بنا.

16
00:00:59,000 --> 00:01:02,000
داخل فئة النوع الخاص بنا، سيكون لدينا فقط طريقة تسمى every.

17
00:01:02,000 --> 00:01:08,000
 إحدى الطرق للقيام بذلك هي إنتاج كل هذه الأشياء، إنتاج الحركة، إنتاج الكوميديا،

18
00:01:08,000 --> 00:01:11,000
 وما إلى ذلك، لكن هذا لن يتوسع بشكل جيد.

19
00:01:11,000 --> 00:01:15,000
 سيكون لدينا سطر فردي لكل من هذه الأسماء.

20
00:01:15,000 --> 00:01:21,000
 لذا، هناك طريقة أفضل للقيام بذلك، وهي مجرد إضافة إلى كل طريقة موجودة في مصفوفة الأسماء بالفعل.

21
00:01:21,000 --> 00:01:27,000
 الأسماء ليست مصفوفة، يمكننا استدعاء كل منها على تلك المصفوفة، وبعد ذلك سوف يعطينا الاسم،

22
00:01:27,000 --> 00:01:33,000
ومن ثم يمكننا أن نلتفت ونسلمها إلى الكتلة المرتبطة لكل طريقة،

23
00:01:33,000 --> 00:01:35,000
 وهي هذه الكتلة هنا.

24
00:01:35,000 --> 00:01:41,000
 مرة أخرى، ستعتمد هذه الطريقة على كل طريقة تم تعريفها في مصفوفة الأسماء.

25
00:01:41,000 --> 00:01:45,000
 والآن عندما نقوم بتشغيل هذا، حسنًا، فهو يطبع جميع أنواعنا.

26
00:01:45,000 --> 00:01:47,000
 لذلك عند كتابة فئة المجموعة الخاصة بك،

27
00:01:47,000 --> 00:01:52,000
 يتمثل دور كل طريقة في تسليم العناصر إلى الكتلة المرتبطة.

28
00:01:52,000 --> 00:01:54,000
 لذلك دعونا ننظر إلى مثال آخر.

29
00:01:54,000 --> 00:01:56,000
 هذا سيكون له فئتين.

30
00:01:56,000 --> 00:02:00,000
هنا لدينا فئة أفلام مع بعض السمات الواضحة إلى حد ما،

31
00:02:00,000 --> 00:02:03,000
 العنوان والتصنيف والمدة الزمنية.

32
00:02:03,000 --> 00:02:07,000
 عندما نشاهد الفيلم، نطبع، ونشاهد اسم الفيلم،

33
00:02:07,000 --> 00:02:09,000
 ويتم تقييمه ومدته بالدقائق.

34
00:02:09,000 --> 00:02:12,000
 في هذا المثال، قمنا بإنشاء أربعة كائنات فيلم.

35
00:02:12,000 --> 00:02:19,000
 لدينا أيضًا فئة إشارة الفيلم، والتي تعمل كمجموعة من كائنات الفيلم في مصفوفة.

36
00:02:19,000 --> 00:02:23,000
 لذا، لإضافة فيلم إلى الإشارة، نسمي طريقة إضافة فيلم.

37
00:02:23,000 --> 00:02:28,000
في هذا المثال، لدينا إشارة تسمى ليلة الجمعة مع ثلاثة من الأفلام الأربعة.

38
00:02:28,000 --> 00:02:34,000
 ما نريد أن نكون قادرين على القيام به هو تكرار الأفلام الموجودة في الإشارة عن طريق استدعاء كل منها.

39
00:02:34,000 --> 00:02:37,000
 إذن، بالنظر إلى الكائن المميز لدينا، نريد أن نكون قادرين على استدعاء كل منهما.

40
00:02:37,000 --> 00:02:44,000
 نريد أن ينتج لنا كائن فيلم، والذي يمكننا بعد ذلك مشاهدته عن طريق استدعاء movie.watch.

41
00:02:44,000 --> 00:02:48,000
 هذا هو الشيء الذي يطبع الفيلم الذي نشاهده بالفعل.

42
00:02:48,000 --> 00:02:51,000
 نعلم الآن أن هذا لن ينجح لأن الكائن الرئيسي ليس مصفوفة.

43
00:02:51,000 --> 00:02:58,000
لم يتم العثور على كل طريقة، لكن يمكننا تعريف كل طريقة في فئة الفيلم.

44
00:02:58,000 --> 00:03:01,000
 كل ما يتعين علينا القيام به هو تكرار جميع الأفلام.

45
00:03:01,000 --> 00:03:06,000
 سنستخدم كل طريقة في مصفوفة الأفلام ثم ننتجها بدورها.

46
00:03:06,000 --> 00:03:12,000
 لذا فإن هذا سوف يسلمنا كائن الفيلم، والذي سنقوم فقط بتدويره وإخضاعه للكتلة المرتبطة به.

47
00:03:12,000 --> 00:03:18,000
 لذا، بنفس الطريقة التي يمكننا بها أن نطلب مصفوفة لكل عنصر من العناصر، يمكننا الآن أن نطلب إشارة فيلم لكل فيلم من أفلامه.

48
00:03:18,000 --> 00:03:22,000
إذا قمنا بتشغيل هذا، نرى أننا نشاهد الأفلام الثلاثة الموجودة في متناول أيدينا.

49
00:03:22,000 --> 00:03:27,000
 الآن الشيء الرائع في هذا هو أنه من خارج الفصل، عندما نستدعي الجميع هنا،

50
00:03:27,000 --> 00:03:31,000
 لا نهتم بكيفية تخزين تلك الأفلام داخليًا في الفصل.

51
00:03:31,000 --> 00:03:37,000
 أعتقد أننا قمنا بتخزينها في قاعدة البيانات أو إيقافها على بعض خدمات الويب في مكان ما. كل طريقة داخل الفصل

52
00:03:37,000 --> 00:03:44,000
 يتضمن كل هذه التفاصيل، ولكن خارج الفصل، لا داعي للقلق بشأن كيفية إدارة كل تلك الأفلام.

53
00:03:44,000 --> 00:03:50,000
نحن فقط نتصل بكل منهم ونعلم أنه سينتج لنا كل فيلم، بغض النظر عن كيفية تخزينه.

54
00:03:50,000 --> 00:03:57,000
 تتمثل الاتفاقية الآن في تسمية أكثر طرق التكرار وضوحًا، وهناك سبب وجيه لذلك، وهو ما سنراه خلال دقيقة.

55
00:03:57,000 --> 00:04:03,000
 ولكن يمكنك أيضًا الحصول على طرق مكررة أخرى، مثل لنفترض أنني أريد فقط مشاهدة أفلام PG.

56
00:04:03,000 --> 00:04:09,000
 بالإضافة إلى كل طريقة عادية لدينا، يمكن أن يكون لدينا طريقة أخرى تسمى كل فيلم PG، على سبيل المثال.

57
00:04:09,000 --> 00:04:11,000
 كيف يتم تعريف ذلك؟

58
00:04:11,000 --> 00:04:14,000
 كل فيلم PG؟

59
00:04:14,000 --> 00:04:19,000
حسنًا، ما يتعين علينا القيام به هنا هو تحديد جميع الأفلام التي حصلت على تصنيف PG.

60
00:04:19,000 --> 00:04:23,000
 نحن نعرف كيف نفعل ذلك. يمكننا استدعاء التحديد على مجموعة الأفلام.

61
00:04:23,000 --> 00:04:28,000
 حدد جميع الأفلام التي نقوم بتقييمها بـ PG.

62
00:04:28,000 --> 00:04:32,000
 سيؤدي ذلك إلى إرجاع مصفوفة، تذكر، مع كل تلك الأفلام المحددة.

63
00:04:32,000 --> 00:04:41,000
 يمكننا ربط هذا مع كل واحد، والذي سيمر عبر كل تلك الأفلام المحددة، ثم ينقلها إلى الكتلة المرتبطة.

64
00:04:41,000 --> 00:04:45,000
 نحن ندير هذا. نرى أننا نشاهد أفلام PG فقط الآن.

65
00:04:45,000 --> 00:04:50,000
كما تعلمون، يمكننا أن نجعل هذا أكثر عمومية حتى تتمكن من مشاهدة الأفلام من أي تصنيف.

66
00:04:50,000 --> 00:04:57,000
 هذا صحيح. بدلاً من استخدام كل فيلم من أفلام PG، قد نطلق على هذا اسمًا مثل كل فيلم حسب التصنيف.

67
00:04:57,000 --> 00:05:01,000
 وبعد ذلك قم فقط بتمرير متغير التصنيف، والذي سيتم استبداله هنا.

68
00:05:01,000 --> 00:05:04,000
 لذا فهي ليست مشفرة. هذا من شأنه أن يكون تصنيف.

69
00:05:04,000 --> 00:05:08,000
 وبعد ذلك هنا، سوف نقوم فقط بالاتصال بكل منهم حسب التقييم.

70
00:05:08,000 --> 00:05:11,000
 تأخذ هذه الطريقة معاملًا، وهو التصنيف الذي نريده.

71
00:05:11,000 --> 00:05:18,000
ستمر هذه الحالة في PG، وسنحصل على هذين الفيلمين اللذين كان لدينا من قبل، أو إذا أردنا فقط مشاهدة أفلام G.

72
00:05:18,000 --> 00:05:20,000
 لدينا فيلم G واحد في قائمة الانتظار لدينا.

73
00:05:20,000 --> 00:05:27,000
 لقد ذكر مايك سابقًا أنك تريد تسمية كل مكرر شائع لديك، وهناك حقًا سبب وجيه لذلك.

74
00:05:27,000 --> 00:05:33,000
 نعم، اتضح أنه من خلال تحديد كل طريقة، يمكنك فتح جميع السلوكيات في الوحدة الرقمية.

75
00:05:33,000 --> 00:05:37,000
 لنفترض أننا نريد العثور على جميع الأفلام الطويلة الموجودة في قائمة الانتظار لدينا.

76
00:05:37,000 --> 00:05:43,000
حسنًا، دعنا نضيف مساحة صغيرة هنا. نريد كل الأفلام الطويلة. افلام طويلة.

77
00:05:43,000 --> 00:05:49,000
 نود أن نكون قادرين على القيام بذلك. خذ كائن قائمة الانتظار الخاص بنا واتصل وحدد جميع الأفلام وحددها.

78
00:05:49,000 --> 00:05:56,000
 تذكر أنه ينتج أفلامًا لنا. حدد كافة الأفلام الموجودة في قائمة الانتظار والتي تزيد مدتها عن 100 دقيقة، على سبيل المثال.

79
00:05:56,000 --> 00:05:59,000
 ومن ثم يمكننا طباعة أفلام طويلة.

80
00:05:59,000 --> 00:06:03,000
 لكن هذا لن ينجح لأن فئة قائمة الانتظار لا تحدد طريقة التحديد.

81
00:06:03,000 --> 00:06:10,000
تذكر أنه لا يمكن استدعاء الأسلوب المحدد إلا عند زيادة الراتب، أو أننا رأينا أنه يتم استدعاؤه فقط عند زيادة الراتب حتى الآن.

82
00:06:10,000 --> 00:06:15,000
 ولكن اتضح أن طريقة التحديد لم يتم تعريفها فعليًا في فئة المصفوفة.

83
00:06:15,000 --> 00:06:18,000
 تم تعريفه في الوحدة النمطية القابلة للتعداد.

84
00:06:18,000 --> 00:06:23,000
 تتضمن فئة المصفوفة هذه الوحدة، ولهذا السبب تعمل مع المصفوفات.

85
00:06:23,000 --> 00:06:32,000
 يمكننا أن نجعلها تعمل مع فئة قائمة انتظار الأفلام الخاصة بنا ببساطة عن طريق تضمين تلك الوحدة القابلة للتعداد، والتي سنفعلها أعلاه هنا وقائمة انتظار الأفلام.

86
00:06:32,000 --> 00:06:36,000
 نقول تشمل لا تعد ولا تحصى.

87
00:06:36,000 --> 00:06:41,000
الآن تم تعريف جميع الطرق المحددة في enumerable في فئة قائمة انتظار الأفلام الخاصة بنا.

88
00:06:41,000 --> 00:06:47,000
 والآن نرى أنه تم تحديد الفيلم الطويل في قائمة الانتظار، وهو الفيلم الذي كانت مدته في هذه الحالة 140.

89
00:06:47,000 --> 00:06:49,000
 لقد كانت أكثر من 100 دقيقة.

90
00:06:49,000 --> 00:06:55,000
 فلماذا يعمل؟ حسنًا، هناك في الواقع سببان. الأول هو أن نقوم بتضمين الوحدة القابلة للتعداد.

91
00:06:55,000 --> 00:07:02,000
 لكن الوحدة القابلة للإحصاء تتطلب أن تكون الفئة المضيفة، وهي الفئة التي قمنا بإدراجها في فئة قائمة انتظار الأفلام،

92
00:07:02,000 --> 00:07:08,000
يجب أن تحدد كل طريقة، وقد قمنا بتعريف كل طريقة هنا والتي تنتج جميع الأفلام.

93
00:07:08,000 --> 00:07:14,000
 لذا فقط لإثبات ذلك، سأقوم بالتعليق على كل طريقة هنا وأحاول تشغيلها مرة أخرى.

94
00:07:14,000 --> 00:07:20,000
 وهذه المرة حصلنا على خطأ مفاده أن الجزء العلوي هو تحديد طريقة غير محددة لكل قائمة انتظار للأفلام.

95
00:07:20,000 --> 00:07:24,000
 لذا من الواضح أن طريقة التحديد تحاول استدعاء كل طريقة.

96
00:07:24,000 --> 00:07:31,000
 وفقط لإثبات ذلك، حسنًا، قم بإلغاء التعليق، سأقوم بتغيير هذا إلى كتلة متعددة الأسطر لأنني أريد طباعة شيء ما.

97
00:07:31,000 --> 00:07:41,000
نحن ننتج الفيلم هناك. لكن هنا، أريد فقط أن أطبع عنوان الفيلم.

98
00:07:41,000 --> 00:07:46,000
 تماما مثل ذلك. لذلك لدينا كل طريقة محددة مع القليل من التصحيح داخلها.

99
00:07:46,000 --> 00:07:52,000
 إذا قمنا بذلك الآن، سنلاحظ أننا نشاهد الفيلم، ولكن بعد ذلك ننتج الأفلام الثلاثة.

100
00:07:52,000 --> 00:08:00,000
 تم التخلص من Toy Story في Apollo 13. ثم تقوم طريقة التحديد بإلقاء نظرة على تلك الأفلام، وكيفية تحديد المعايير في الكتلة.

101
00:08:00,000 --> 00:08:05,000
ثم يختار ما يطابق معايير الكتلة. في هذه الحالة، إنها أبولو 13.

102
00:08:05,000 --> 00:08:12,000
 لذلك نرى أن كل طريقة يتم استدعاؤها هنا كنتيجة ثانوية لاستدعاء الطريقة المحددة هنا.

103
00:08:12,000 --> 00:08:20,000
 لذا، إذا قمت بتحديد كل طريقة وقمت بتضمين أو مزج وضع طبيعي جديد في فصلك الدراسي، فسيتم إلغاء قفل جميع الطرق العادية الجديدة.

104
00:08:20,000 --> 00:08:26,000
 وهذا يعني أنه يمكننا العثور على الفيلم الأول الذي يحمل الرقم 13 في العنوان باستخدام طريقة الكشف.

105
00:08:26,000 --> 00:08:31,000
بالتأكيد، كل هذه الأساليب متاحة لنا. يمكننا أن نطلق على Q dot Detect.

106
00:08:31,000 --> 00:08:35,000
 هذا سيعطينا كائن فيلم لأن تذكر أن Q ينتج أفلامًا.

107
00:08:35,000 --> 00:08:41,000
 نريد العنوان وسأستخدم مطابقة التعبير العادي هنا تساوي التلدة في روبي.

108
00:08:41,000 --> 00:08:47,000
 والتعبير العادي سيكون 13. لذا فإن أي فيلم يحتوي عنوانه على 13.

109
00:08:47,000 --> 00:08:52,000
 نريد اكتشاف ذلك ثم سأقوم بطباعته باستخدام طريقة P هنا.

110
00:08:52,000 --> 00:08:57,000
 يمين؟ قم بتشغيل ذلك وسنرى أننا نعود أبولو 13.

111
00:08:57,000 --> 00:09:08,000
لذلك دعونا نلخص. فئة الفيلم Q الخاصة بنا هي عبارة عن مجموعة من كائنات الفيلم. على سبيل المثال، يمكن أن يكون لدينا فيلم عائلي Q مع أي عدد من الأفلام وفيلم درامي Q مع الأفلام.

112
00:09:08,000 --> 00:09:14,000
 إذا أردنا تكرار مجموعة الأفلام، فلا يمكننا تسمية كل منها بهذا الشكل خارج الفصل الدراسي.

113
00:09:14,000 --> 00:09:18,000
 كائنات الفيلم Q نفسها ليست كائنات مصفوفة.

114
00:09:18,000 --> 00:09:26,000
 يحتوي كائن الفيلم Q على مصفوفة من أفلامه، ولكن خارج الفصل كان هناك مستوى واحد ننتقل من تلك المصفوفة.

115
00:09:26,000 --> 00:09:34,000
لذلك نحن بحاجة إلى تحديد كل طريقة في فئة الفيلم Q التي تتكرر عبر جميع الكائنات الموجودة في مصفوفة الأفلام وتنتج كل منها على حدة.

116
00:09:34,000 --> 00:09:44,000
 الآن عندما نقوم بتشغيل هذا السطر من التعليمات البرمجية، فإنه يستدعي كل طريقة محددة في فئة الفيلم Q وتفعل الكتلة أي شيء مرة واحدة مع كل كائن فيلم تم إنتاجه.

117
00:09:44,000 --> 00:09:52,000
 نواجه مشكلة مماثلة إذا حاولنا تحديد أفلام معينة من فيلم Q أو استخدام أي من طرق الهاتف المحمول الجديدة.

118
00:09:52,000 --> 00:10:02,000
ولكن إذا قمنا بتضمين وحدة متنقلة جديدة وقمنا بتحديد كل طريقة خاصة بنا، فيمكننا استخدام أي من الأساليب المحمولة الجديدة على كائن الفيلم Q. رائع جدا، هاه؟

119
00:10:02,000 --> 00:10:06,000
 في هذا التمرين، سنمنحك فرصة لتجربة كل هذا في مجموعة مختلفة من الفصول الدراسية.

120
00:10:06,000 --> 00:10:11,000
 وفي القسم التالي، سنوضح لك كيفية عمل وحدة الهاتف المحمول الجديدة فعليًا.

121
00:10:11,000 --> 00:10:15,000
 نراكم بعد ذلك.


